import { ref } from 'vue';

// 初始数据模板
export const WORKBOOK_DATA = {};

// 存储解析后的resources数据
export const RESOURCES_DATA = ref({});

// 从 sessionStorage 获取初始数据并处理resources
const initData = () => {
  const sessionData = sessionStorage.getItem('workbookData');
  if (sessionData) {
    try {
      const parsedData = JSON.parse(sessionData);
      // 处理resources数据
      if (parsedData.resources && Array.isArray(parsedData.resources)) {
        parsedData.resources.forEach((resource: any) => {
          if (resource.data && resource.data !== '{}') {
            try {
              RESOURCES_DATA.value = JSON.parse(resource.data);
              resource.data = '{}';
            } catch (e) {
              console.error(`Failed to parse resource data for ${resource.name}:`, e);
              RESOURCES_DATA.value = resource.data;
            }
          }
        });
      }
      return parsedData;
    } catch (e) {
      console.error('Failed to parse session data:', e);
      return WORKBOOK_DATA;
    }
  }
  return WORKBOOK_DATA;
};

// 获取保护区域数据
export const getProtectedRanges = (sheetId: string) => {
  const permissionPoint = RESOURCES_DATA.value[sheetId];
  console.log('permissionPoint', permissionPoint);
  // 如果 permissionPoint 不存在，返回空数组
  if (!permissionPoint) {
    return [];
  }
  // 使用 flatMap 将所有 ranges 合并到一个数组中
  return permissionPoint.flatMap(
    point =>
      point.ranges?.map(({ startRow, endRow, startColumn, endColumn }) => ({
        startRow,
        endRow,
        startColumn,
        endColumn,
      })) || []
  );
};

// 创建一个函数来获取响应式数据存储
export const getWorkbookDataStore = () => ref(initData());

// 更新数据的方法
export const updateWorkbookData = (newData: any) => {
  sessionStorage.setItem('workbookData', JSON.stringify(newData));
};
